package com.nf.health.app.utils;

import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.Toast;

import com.amap.api.location.AMapLocation;
import com.amap.api.location.AMapLocationClient;
import com.amap.api.location.AMapLocationClientOption;
import com.amap.api.maps.CameraUpdateFactory;
import com.amap.api.maps.model.BitmapDescriptor;
import com.amap.api.maps.model.BitmapDescriptorFactory;
import com.amap.api.maps.model.LatLng;
import com.amap.api.maps.model.MarkerOptions;
import com.amap.api.services.core.LatLonPoint;
import com.amap.api.services.geocoder.GeocodeSearch;
import com.amap.api.services.geocoder.RegeocodeQuery;
import com.nf.health.app.R;
import com.nf.health.app.activity.my.medicine.MyMedicineActivity;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * C高德地图工具类
 */

public class LocationGaoDeUtils   {

    public LocationGaoDeUtils(){

    }

//    private void initMap(){
//        //https://wenku.baidu.com/view/7b479b57c1c708a1284a44a7.html
//        if (aMap == null) {
//            aMap = mp_view.getMap();
//            //用高德默认图标
//            //geoMarker= aMap.addMarker(new MarkerOptions().anchor(0.5f, 0.5f).icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE)));
//            //自定义图标
//            geoMarker = aMap.addMarker(new MarkerOptions().anchor(0.5f, 0.5f)
//                    .icon(BitmapDescriptorFactory.fromBitmap(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher))));
//            //          mp_view.setBuiltInZoomControls(true); // 设置启用内置的缩放控件
////            mMapController = mMapView.getController(); // 得到mMapView
//            // 的控制权,可以用它控制和驱动平移和缩放
//            //修改地图的中心点位置
////            CameraPosition cp = aMap.getCameraPosition();
////            CameraPosition cpNew = CameraPosition.fromLatLngZoom(new LatLng(34.7466, 113.625367), cp.zoom);
////            CameraUpdate cu = CameraUpdateFactory.newCameraPosition(cpNew);
////            aMap.moveCamera(cu);;// 设置指定的可视区域地图【重要！】
//
//            aMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(114.63 ,33.63),19));// 设置指定的可视区域地图【重要！】
//        }
//        // geocoderSearch = new GeocodeSearch(this);
//        //   geocoderSearch.setOnGeocodeSearchListener(this);
//
//    }


    // 此方法为每隔固定时间会发起一次定位请求，为了减少电量消耗或网络流量消耗，
// 注意设置合适的定位时间的间隔（最小间隔支持为1000ms），并且在合适时间调用stopLocation()方法来取消定位请求
// 在定位结束后，在合适的生命周期调用onDestroy()方法
// 在单次定位情况下，定位无论成功与否，都无需调用stopLocation()方法移除请求，定位sdk内部会移除
//    @Override
//    public void onLocationChanged(AMapLocation amapLocation) {
//        if (null != amapLocation) {
//            if (amapLocation.getErrorCode() == 0) {
//                Message msg = mHandler.obtainMessage();
//                msg.obj = amapLocation;
//                msg.what = MapGUtils.MSG_LOCATION_START;
//                mHandler.sendMessage(msg);
//
//                //定位成功回调信息，设置相关消息
//                amapLocation.getLocationType();//获取当前定位结果来源，如网络定位结果，详见定位类型表
//                amapLocation.getLatitude();//获取纬度
//                amapLocation.getLongitude();//获取经度
//                amapLocation.getAccuracy();//获取精度信息
//                SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//                Date date = new Date(amapLocation.getTime());
//                df.format(date);//定位时间
//                LogUtil.d("yuyahao","定位信息: " + amapLocation.toString());
//
//                //以下是显示自己添加的
//                double  lat = amapLocation.getLatitude();
//                double lon = amapLocation.getLongitude();
//                // 设置当前地图显示为当前位置
//                aMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(lat, lon), 19));
//                MarkerOptions markerOptions = new MarkerOptions();
//                markerOptions.position(new LatLng(lat, lon));
//                markerOptions.title("当前位置");
//                markerOptions.visible(true);
//                BitmapDescriptor bitmapDescriptor = BitmapDescriptorFactory.fromBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.ic_delete_pic));
//                markerOptions.icon(bitmapDescriptor);
//                aMap.addMarker(markerOptions);
//            } else {
//                //显示错误信息ErrCode是错误码，errInfo是错误信息，详见错误码表。
//                LogUtil.e("yuyahao","location Error, ErrCode:"
//                        + amapLocation.getErrorCode() + ", errInfo:"
//                        + amapLocation.getErrorInfo());
//            }
//        }
//
//    }

//    Handler mHandler = new Handler() {
//        public void dispatchMessage(Message msg) {
//            switch (msg.what) {
//                //定位完成
//                case MapGUtils.MSG_LOCATION_START:
//                    String result = "";
//                    try {
//                        AMapLocation loc = (AMapLocation) msg.obj;
//                        result = MapGUtils.getLocationStr(loc, 1);
//                        strMsg = result.split(",");
//                        Toast.makeText(MyMedicineActivity.this, "定位成功", Toast.LENGTH_LONG).show();
//                        String  address = "地址：" + strMsg[0] + "\n" + "经    度：" + strMsg[1] + "\n" + "纬    度：" + strMsg[2];
//                        GetToast.useString(MyMedicineActivity.this,address);
//                        latLonPoint= new LatLonPoint(Double.valueOf(strMsg[2]), Double.valueOf(strMsg[1]));
//                        getAddress(latLonPoint);
//                    } catch (Exception e) {
//                        Toast.makeText(MyMedicineActivity.this, "定位失败", Toast.LENGTH_LONG).show();
//                    }
//                    break;
//                default:
//                    break;
//            }
//        };
//
//    };

//    public void Location() {
//        // TODO Auto-generated method stub
//        try {
//            locationClient = new AMapLocationClient(getApplicationContext());
//            locationOption = new AMapLocationClientOption();
//            //设置定位间隔,单位毫秒,默认为2000ms
//            locationOption.setInterval(2000);
//            // 设置定位模式为低功耗模式  Battery_Saving为低功耗模式，Device_Sensors是仅设备模式
//            locationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Battery_Saving);
//            // 设置定位监听
//            locationClient.setLocationListener(this);
//            locationOption.setOnceLocation(true);//设置为单次定位
//            locationClient.setLocationOption(locationOption);// 设置定位参数
//            // 启动定位
//            locationClient.startLocation();
//            mHandler.sendEmptyMessage(MapGUtils.MSG_LOCATION_START);
//        } catch (Exception e) {
//            e.printStackTrace();
//
//            Toast.makeText(MyMedicineActivity.this, "参数错误", Toast.LENGTH_LONG).show();
//        }
//    }


//    /**
//     * 响应逆地理编码
//     */
//    public void getAddress(final LatLonPoint latLonPoint) {
//        RegeocodeQuery query = new RegeocodeQuery(latLonPoint, 200,
//                GeocodeSearch.AMAP);// 第一个参数表示一个Latlng，第二参数表示范围多少米，第三个参数表示是火系坐标系还是GPS原生坐标系
//        geocoderSearch.getFromLocationAsyn(query);// 设置同步逆地理编码请求
//    }

//    /**
//     * 地理编码查询回调
//     */
//    @Override
//    public void onGeocodeSearched(GeocodeResult result, int rCode) {
//
//    }


//    /**
//     * 逆地理编码回调
//     */
//    @Override
//    public void onRegeocodeSearched(RegeocodeResult result, int rCode) {
//        if (rCode == 1000) {
//            if (result != null && result.getRegeocodeAddress() != null
//                    && result.getRegeocodeAddress().getFormatAddress() != null) {
//
//                Toast.makeText(MyMedicineActivity.this,result.getRegeocodeAddress().getFormatAddress()
//                        + "附近",Toast.LENGTH_LONG).show();
//                aMap.animateCamera(CameraUpdateFactory.newLatLngZoom(
//                        MapGUtils.convertToLatLng(latLonPoint), 15));
//                geoMarker.setPosition(MapGUtils.convertToLatLng(latLonPoint));
//            } else {
//
//            }
//        } else {
//        }
//    }

//    @Override
//    protected void onDestroy() {
//        super.onDestroy();
//        //在activity执行onDestroy时执行mp_view.onDestroy()，销毁地图
//        mp_view.onDestroy();
//    }
//    @Override
//    protected void onResume() {
//        super.onResume();
//        //在activity执行onResume时执行mp_view.onResume ()，重新绘制加载地图
//        mp_view.onResume();
//    }
//    @Override
//    protected void onPause() {
//        super.onPause();
//        //在activity执行onPause时执行mp_view.onPause ()，暂停地图的绘制
//        mp_view.onPause();
//    }
//    @Override
//    protected void onSaveInstanceState(Bundle outState) {
//        super.onSaveInstanceState(outState);
//        //在activity执行onSaveInstanceState时执行mp_view.onSaveInstanceState (outState)，保存地图当前的状态
//        mp_view.onSaveInstanceState(outState);
//    }


}
